从反射式到规划式
在智能体设计的演进过程中,我们从 反射式智能体(根据简单规则将感知直接映射为动作,例如“若前车刹车,则开始刹车”)发展到 问题求解智能体。反射式智能体基于即时情境运作,而问题求解智能体则是 目标驱动的。它们会考虑自身行为的未来后果,以找到能够满足特定目标的动作序列。
- 反射式智能体: $Action = Function(Percept)$
- 规划式智能体: $Action\_Sequence = Search(State, Goal)$
原子状态表示
在这个基础层面上,智能体采用 原子表示。这意味着世界的状态被视为一个黑箱——一个对搜索算法而言内部结构不可见的单一节点。智能体只针对以下内容进行推理:
- 状态($S$): 环境的快照。
- 动作($A$): 状态之间的转移。
- 目标测试: 判断状态 $s \in S_{goal}$ 是否成立的布尔检查。
问题求解循环
问题求解智能体遵循一个独特的四步循环来在环境中导航:
- 目标制定: 根据当前情境决定要追求的目标。
- 问题制定: 将现实世界抽象为数学模型(状态与动作)。
- 搜索: 模拟动作序列以寻找 最优路径。
- 执行: 不再进一步斟酌,直接执行搜索阶段找到的动作(假设环境是静态的)。
Python 实现(agent_types.py)
1
class ReflexAgent:
2
defact(self, percept):
3
# Direct mapping: Rule -> Action
4
return rules.get(percept, default_action)
5
6
class ProblemSolvingAgent:
7
def__init__(self):
8
self.seq = [] # Buffered action sequence
9
10
defact(self, percept):
11
# If we are mid-execution, continue
12
ifself.seq:
13
returnself.seq.pop(0)
14
15
# Otherwise, Plan (Search)
16
state = self.update_state(percept)
17
goal = self.formulate_goal(state)
18
problem = self.formulate_problem(state, goal)
19
20
# Search returns a list of actions
21
self.seq = search_algorithm(problem)
22
23
returnself.seq.pop(0)